{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from datetime import *\n",
    "import math\n",
    "import os\n",
    "import pyarrow\n",
    "import re"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:40: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:49: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:51: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:53: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_num'].fillna(0,inplace=True)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:55: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:57: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:59: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:61: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:63: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:65: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  bar_d[Object+'_clz'] = bar_d['clz']\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:74: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
      "  bar_d_total['num'] = pd.Series(loop,index=bar_d_total.index) #提前准备好空序列并填充0，方便后续循环计算\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:75: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
      "  bar_d_total['turnover'] = pd.Series(loop,index=bar_d_total.index)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:76: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
      "  bar_d_total['pnl'] = pd.Series(loop,index=bar_d_total.index)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:77: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
      "  bar_d_total['commission'] = pd.Series(loop,index=bar_d_total.index)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:78: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
      "  bar_d_total['pnlnet'] = pd.Series(loop,index=bar_d_total.index)\n",
      "D:\\temp\\ipykernel_4876\\3132427443.py:79: PerformanceWarning: DataFrame is highly fragmented.  This is usually the result of calling `frame.insert` many times, which has poor performance.  Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n",
      "  bar_d_total['position'] = pd.Series(loop,index=bar_d_total.index)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 1000x500 with 1 Axes>",
      "image/png": "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EJVBAichyqFNmzaqadOmavLkyeqzzz5Tc+fOVWPHjlUGg0GFhIRY/adX1sBp3LhxymAwqKefflp9+umnasKECaphw4bK19e33IFTu3bt1PDhw9W8efPUvffea/kCXNBbb72lANWzZ081c+ZM9fHHH6spU6aosLAwq/+MSvryOmnSJKXT6dThw4fL9RoiIyOVwWBQ3bt3VwsXLlRLliyxLBx8deCUlpamwsPDlZOTk3ruuefURx99pPr166cANWfOHKv6FJVVTyltzQ9APfzww+rzzz+3fOG5OqNVcee/9tpr6rXXXlN33323AtT9999vOWa2Z88e5evrqx5//HH14Ycfqrlz56oJEyYoBwcHFRISUugLX0mKCpyysrJU48aNVf369dU777yj3nvvPdW6dWvVuXNnmwROSin19NNPK0B17NhRvfvuu2r+/Pnq8ccfV87Ozio4OFgdPXq0yPo3b95ceXh4KEDt2rWr0PPffvut0uv1qm3btur1119Xn376qXrppZdUx44drT4rJb33isqqp1T+ul2jRo1Sn3/+uRo3bpwCCmVpK+78O++807KWzKeffqp69uypHBwc1L///mtVbteuXcpoNKpOnTqpjz/+WL300kvK2dlZDR48uFBd7XnNqz366KPKYDBYfYEu6MCBAwpQ77//vuXY66+/rvR6vXJ1dVVPPvlkoXN27typnJycVEhIiHrnnXfUm2++qYKCglTHjh2LDJxatmxp+fwU/Pn999+VUmX/3WRm6/dbVlaWCg0NVfXr11dvvPGG+uijj1T//v1Vhw4dCn1uli9frnQ6nWrfvr2aPXu2mjZtmqpXr55q27atCgkJsbruI488ogA1bNgwNXv2bDV37lz19NNPq6CgIKvPaHmy6ikln4HSPgNCVAYJnIQohz/++EPdf//9qlWrVsrd3V05OTmp5s2bqyeffNISAJiVNXC6cuWKmjhxoqpfv75yd3dXQ4YMUUePHi1UriyB0+HDh9WoUaOUh4eH8vHxUU888USRC+D++OOPqnfv3srNzU25ubmpVq1aqUmTJqljx45ZypT05fXUqVPKYDBY6lfW16CUthp8s2bNlMFgsPrPu7gFcM3XdXJyUu3atSvyS0RxgU9ubq568803VZMmTZSTk5Nq06aNVXrz0s6Hwgv2mn/MYmJi1MMPP6xatWql3NzclJOTkwoL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\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "b = str(input('请输入目标仓位（0,1,2）：'))\n",
    "#确立初始资金\n",
    "if b == \"2\":\n",
    "    fund = 1\n",
    "    target1 = pd.read_csv('samples\\SampleTarget'+b+'.csv').set_index(['trading_day','timestamp'])  # 用于最开始的策略选择,下同\n",
    "else:\n",
    "    fund = 1000000\n",
    "    target1 = pd.read_csv('samples\\SampleTarget'+b+'.csv').set_index(['trading_day','timestamp'])\n",
    "target1.dropna(axis =1,inplace=True,how='all')\n",
    "objects = list(target1.columns)\n",
    "df_list =[] #保存行情表\n",
    "for i in range(len(objects)):\n",
    "    df = pd.read_feather('data-1m/' + objects[i] + '.ft').loc[:, ['trading_day', 'timestamp', 'clz']]\n",
    "    df.set_index(['trading_day', 'timestamp'],inplace=True)\n",
    "    df_list.append(df)\n",
    "bar_d_list = [] #将分钟数据进行切片，选取持仓日期间的数据\n",
    "for i in range(len(df_list)):\n",
    "    bar_d_target = df_list[i][df_list[i].index.isin(list(target1.index.values))]\n",
    "    bar_d_target = bar_d_target.pivot_table(index='trading_day',values=['clz'],aggfunc='last')\n",
    "    #print('bar1d_target')\n",
    "    #print(bar1d_target)\n",
    "    bar_d = df_list[i].pivot_table(index='trading_day',values=['clz'],aggfunc='last')\n",
    "    #print('bar1d')\n",
    "    #print(bar1d)\n",
    "    #交换一下clz、timestamp两列的位置\n",
    "    bar_d_clz = bar_d['clz']\n",
    "    del bar_d['clz']\n",
    "    bar_d['clz'] = bar_d_clz\n",
    "    bar_d_list.append(bar_d)\n",
    "    #获取仓位\n",
    "    st = target1.loc[:,[objects[i]]].pivot_table(index='trading_day',values=[objects[i]],aggfunc='last')\n",
    "    #print(st)\n",
    "\n",
    "    #获取调仓时的价格\n",
    "    bar_d.loc[bar_d_target.index,:] = bar_d_target\n",
    "    bar_d = bar_d.loc[bar_d_target.index[0]:bar_d_target.index[-1],:]\n",
    "    #并表\n",
    "    #print(st.columns)\n",
    "    if len(bar_d)>=len(st):\n",
    "        bar_d.loc[st.index[st.index.isin(bar_d.index)],st.columns] = st\n",
    "    else:\n",
    "        st.loc[bar_d.index[bar_d.index.isin(st.index)],bar_d.columns] = bar_d\n",
    "        bar_d=st\n",
    "    #print(bar_d)\n",
    "#开始计算数值\n",
    "    Object = objects[i] #存放商品名\n",
    "    #print(target)\n",
    "    #计算持仓数量：持仓目标/当期价格\n",
    "    bar_d[Object + '_num'] = bar_d[Object] / bar_d['clz'] #持仓数量\n",
    "    #默认没有调仓的时候仓内商品数量不变，故向前填充\n",
    "    bar_d[Object + '_num'].fillna(method='ffill',inplace=True)\n",
    "    #将第一行Nan填充为0\n",
    "    bar_d[Object + '_num'].fillna(0,inplace=True)\n",
    "    #计算Turnover\n",
    "    bar_d[Object + '_turnover'] = bar_d['clz']*(bar_d[Object + '_num']-bar_d[Object + '_num'].shift(1))\n",
    "    #计算pnl\n",
    "    bar_d[Object + '_pnl'] = bar_d[Object + '_num'].shift(1)*(bar_d['clz']-bar_d['clz'].shift(1))\n",
    "    #计算commission，为turnover的万分之三\n",
    "    bar_d[Object + '_commission'] = abs(bar_d[Object + '_turnover'])*0.0003\n",
    "    #计算pnlnet\n",
    "    bar_d[Object + '_pnlnet'] = bar_d[Object + '_pnl']- bar_d[Object + '_commission']\n",
    "    #计算position\n",
    "    bar_d[Object + '_position'] = bar_d[Object + '_num']*bar_d['clz']\n",
    "    #转价格\n",
    "    bar_d[Object+'_clz'] = bar_d['clz']\n",
    "    del bar_d['clz']\n",
    "    bar_d_list.append(bar_d)\n",
    "\n",
    "\n",
    "###################多品种并表操作########################\n",
    "bar_d_total = pd.concat(bar_d_list,join='outer',axis=1) #横向拼接\n",
    "######计算总的turnover、pnl、commision、pnlnet\n",
    "loop = np.zeros(shape=len(bar_d_total.index))\n",
    "bar_d_total['num'] = pd.Series(loop,index=bar_d_total.index) #提前准备好空序列并填充0，方便后续循环计算\n",
    "bar_d_total['turnover'] = pd.Series(loop,index=bar_d_total.index)\n",
    "bar_d_total['pnl'] = pd.Series(loop,index=bar_d_total.index)\n",
    "bar_d_total['commission'] = pd.Series(loop,index=bar_d_total.index)\n",
    "bar_d_total['pnlnet'] = pd.Series(loop,index=bar_d_total.index)\n",
    "bar_d_total['position'] = pd.Series(loop,index=bar_d_total.index)\n",
    "for obj in objects:\n",
    "    bar_d_total['num'] += bar_d_total[obj+'_num'] #全品种仓位\n",
    "    bar_d_total['turnover'] += bar_d_total[obj+'_turnover'] #全品种需成交金额\n",
    "    bar_d_total['pnl'] += bar_d_total[obj+'_pnl'] #全品种损益\n",
    "    bar_d_total['commission'] += bar_d_total[obj+'_commission']\n",
    "    bar_d_total['pnlnet'] += bar_d_total[obj+'_pnlnet']\n",
    "    bar_d_total['position'] += bar_d_total[obj+'_position']\n",
    "#计算累积的pnl、pnlnet，要略过inf数据，否则累加出现NaN\n",
    "bar_d_total['cum_pnl'] = bar_d_total['pnl'][np.isfinite(bar_d_total['pnl'])].cumsum()\n",
    "bar_d_total['cum_pnlnet'] = bar_d_total['pnlnet'][np.isfinite(bar_d_total['pnlnet'])].cumsum()\n",
    "bar_d_total['date'] = date #把日期加回\n",
    "########################指标计算######################\n",
    "#计算sharpe,SharpeRatio = 费后pnl均值/费后pnl标准误\n",
    "pnlnet = bar_d_total['pnlnet'][np.isfinite(bar_d_total['pnlnet'])]\n",
    "n = len(pnlnet)\n",
    "SharpeRatio = np.mean(pnlnet)/((np.std(pnlnet)/np.sqrt(n))*15.8)\n",
    "#TurnOver 全品种平均需成交额/初始资金（1 or 100w）\n",
    "turnover = bar_d_total['turnover'][np.isfinite(bar_d_total['turnover'])]\n",
    "TurnOver = np.mean(turnover)/fund\n",
    "#AvgLeverage = 全品种平均仓位/初始资金( 1 or 100w)\n",
    "position = bar_d_total['position'][np.isfinite(bar_d_total['position'])]\n",
    "AvgLeverage = np.mean(position)/fund\n",
    "\n",
    "\n",
    "#画图\n",
    "x = pd.to_datetime(bar_d_total.index,format = \"%Y%m%d\")\n",
    "y1 = bar_d_total['cum_pnl']\n",
    "y2 = bar_d_total['cum_pnlnet']\n",
    "plt.figure(figsize=(10,5))\n",
    "plt.grid()\n",
    "plt.title('SharpeRatio:%.2f TurnOver:%.5f AvgLeverage:%.5f'%(SharpeRatio,TurnOver,AvgLeverage))\n",
    "plt.plot(x,y1,x,y2)\n",
    "plt.xlabel('date')\n",
    "if fund==1: #用最后一个值的大小判断度量\n",
    "    plt.ylabel('Yuan')\n",
    "else:\n",
    "    plt.ylabel('million')\n",
    "plt.legend(['cum_pnl','cum_pnlnet'])\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "is_executing": true
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
